import axios from "axios";
import { tansParams } from "./paramsUtil";

// 创建实例
const instance = axios.create({
  baseURL: '/api',
  timeout: 10000
})

// 请求拦截器
instance.interceptors.request.use((config) => {
  // 设置不需要token的白名单
  let WhiteList = ['/patient/patient/token','/patient/patient/register'];
  // 处理不需要token的请求
  if (!WhiteList.includes(config.url)){
    let token = localStorage.getItem('Authorization');
    config.headers['Authorization'] = 'Bearer ' + token;
  }
  config.headers['Content-Type'] = 'application/json;charset=utf-8';
  // 处理POST、PUT请求
  /*if ((config.method === 'post' || config.method === 'put') && config.data) {
    // 如果需要在POST请求中处理数据，可以在这里添加逻辑
    // 例如，你可以对config.data进行转换或添加其他参数
    // config.data = config.data;
  }*/
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?' + tansParams(config.params);
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }
  return config;
}, err => {
  return Promise.reject(err)
});

// 响应拦截器
instance.interceptors.response.use(response => {
  // ...（你的其他响应拦截器逻辑）
  return response;
}, error => {
  if (axios.isCancel(error)) {
    alert('请求已被取消'); // 如果请求被取消，你可以在这里处理
  } else {
    if (error.code === 'ECONNABORTED') {
      alert('请求超时，请重新刷新！'); // 请求超时
      // 在这里你可以执行相应的提示用户的操作，例如弹出提示框
    } else {
      // 处理其他网络错误
      alert('未找到路径！');
    }
    return Promise.reject(error);
  }
});

// 导出实例
export default instance